/**************************************************************************************************
**                                                                                               **
**  文件名称:  dal_uart_drv.h                                                                    **
**  版权所有:  CopyRight @ Xiamen Yaxon NetWork CO.LTD. 2017                                     **
**  文件描述:  串口抽象化驱动                                                                    **
**  ===========================================================================================  **
**  创建信息:  | 2017-7-8 | LEON | 创建本模块                                                    **
**  ===========================================================================================  **
**  修改信息:  单击此处添加....                                                                  **
**************************************************************************************************/
#ifndef DAL_UART_DRV_H
#define DAL_UART_DRV_H

#include "dal_uart_reg.h"

/*************************************************************************************************/
/*                           流控模式定义                                                        */
/*************************************************************************************************/
typedef enum {
    UART_FCM_NULL = 0,                                                         /* 无流控控制 */
    UART_FCM_XONXOFF,                                                          /* 软件流控 */
    UART_FCM_RTS,                                                              /* 硬件流控 */
    UART_FCM_MAX
} UART_FCM_E;

/*************************************************************************************************/
/*                           串口数据位定义                                                      */
/*************************************************************************************************/
typedef enum {
    UART_DATABIT_NULL = 0,
    UART_DATABIT_5,
    UART_DATABIT_6,
    UART_DATABIT_7,
    UART_DATABIT_8,
    UART_DATABIT_9,
    UART_DATABIT_MAX
} UART_DATABIT_E;

/*************************************************************************************************/
/*                           串口停止位定义                                                      */
/*************************************************************************************************/
typedef enum {
    UART_STOPBIT_NULL = 0,
    UART_STOPBIT_1,
    UART_STOPBIT_2,
    UART_STOPBIT_0_5,
    UART_STOPBIT_1_5,
    UART_STOPBIT_MAX
} UART_STOPBIT_E;

/*************************************************************************************************/
/*                           串口校验位定义                                                      */
/*************************************************************************************************/
typedef enum {
    UART_PARITY_NONE = 0,                                                      /* 无校验 */
    UART_PARITY_EVEN,                                                          /* 偶校验 */
    UART_PARITY_ODD,                                                           /* 奇校验 */
    UART_PARITY_SPACE,                                                         /* 校验位为0 */
    UART_PARITY_MARK,                                                          /* 校验位为1 */
    UART_PARITY_MAX
} UART_PARITY_E;

/*************************************************************************************************/
/*                           串口配置参数定义                                                    */
/*************************************************************************************************/
typedef struct {
    INT32U         com;                                                        /* 串口通道编号 */
    INT32U         baud;                                                       /* 波特率, 1200~115200 */
    INT32U         parity;                                                     /* 奇偶校验位 */
    INT32U         databit;                                                    /* 数据位 */
    INT32U         stopbit;                                                    /* 停止位 */
    INT32U         rx_fcm;                                                     /* 接收流控模式 */
    INT32U         tx_fcm;                                                     /* 发送流控模式 */
    INT32U         rx_len;                                                     /* 配置平台接收缓存长度 */
    INT32U         tx_len;                                                     /* 配置平台发送缓存长度 */
} UART_CFG_T;

void DAL_UART_InitDrv(void);
BOOLEAN DAL_UART_OpenUart(UART_CFG_T *cfg);
BOOLEAN DAL_UART_CloseUart(INT8U com);
INT32S DAL_UART_ReadChar(INT8U com);
BOOLEAN DAL_UART_WriteChar(INT8U com, INT8U data);
BOOLEAN DAL_UART_WriteCharWait(INT8U com, INT8U data);
BOOLEAN DAL_UART_WriteBlock(INT8U com, INT8U *sptr, INT16U slen);
INT32U DAL_UART_GetRecvBytes(INT8U com);
INT32U DAL_UART_LeftOfSendbuf(INT8U com);

#endif


